package pe.com.hermes.hermetic.web.controller.consultas;

import pe.com.hermes.hermetic.beans.AuditBean;
import pe.com.hermes.hermetic.negocio.service.HermeticFacade;
import pe.com.hermes.hermetic.web.controller.base.IController;
import pe.com.hermes.hermetic.web.controller.general.MostrarReporteController;
import pe.com.hermes.hermetic.web.forms.HMF3009Form;
import pe.com.hermes.hermetic.web.forms.HMF4009Form;
import pe.com.hermes.hermetic.negocio.ultil.ConstantesHermetic;
import pe.com.hermes.hermetic.negocio.ultil.Util;

import pe.com.hermes.hermetic.web.controller.base.IWebOpciones;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;


@RequestMapping("/mostrarHWF3009.html")
@SessionAttributes(value={"codOpci","desOpci"})
@Controller
public class RemesasTransacSolicitadasController implements IController{

    private Logger logger = Logger.getLogger(this.getClass());
    
    @Autowired
    private HermeticFacade servicioHermetic;
    
   @Autowired
   private MostrarReporteController reporteFactory;        
    
    
    @RequestMapping(method=RequestMethod.GET)
    protected String showForm(ModelMap model, HttpServletRequest request) throws Exception {

        HttpSession session = request.getSession(false);        
        if (request.getSession().getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu2");
        if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.CONSUL_REMESAS_TRANSAC_SOLICI)) {
            return FORM_ACCESS_NULL_VIEW;
        }
        
        String cliente = (String)request.getSession().getAttribute("cliente");
        String sucursal = (String)request.getSession().getAttribute("sucursal");        
        
        HMF3009Form form = new HMF3009Form();
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);
        
        try {                
            //obtengo la fecha de hoy de BD
            String fechaHoy = servicioHermetic.getFechaHoy();
            form.setFechaDesde(fechaHoy); 
            form.setFechaHasta(fechaHoy);
            form.setHoraDesde(null);
            form.setHoraHasta(null);
            form.setChk(null);
            
            List listRemesaTransac = servicioHermetic.getRemesasTransaccionesSolicitadas(cliente, 
                                                            sucursal,
                                                            form.getFechaDesde(),
                                                            form.getFechaHasta(),
                                                            form.getHoraDesde(),
                                                            form.getHoraHasta()
                                                            );          
            AuditBean auditBean = new AuditBean(REME_TRANS_SOLI);
            servicioHermetic.inseAudit(auditBean);
            String codOpci = IWebOpciones.REME_TRANS_SOLI;
            String desOpci = servicioHermetic.getDesOpci(codOpci, request);
            model.put("codOpci",codOpci);
            model.put("desOpci",desOpci);
            model.put(FORM_KEY,form);  
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("Error en el proceso. "+ e);
            return FORM_ERROR_VIEW;
        }        

        return FORM_REME_TRANSAC_SOLICI_VIEW;
    }

    @RequestMapping(params="accion=mostrar")
    private String mostrar (ModelMap model,@ModelAttribute(FORM_KEY) HMF3009Form form, BindingResult result, HttpServletRequest request) throws Exception {    
    
        HttpSession session = request.getSession(false);        
        if (request.getSession().getAttribute("usuario") == null)
            return FORM_SESSION_FINISH;

        List listaTransacciones = (List)session.getAttribute("listaMenu2");
        if (!Util.validaAccesoOpcion(listaTransacciones, ConstantesHermetic.CONSUL_REMESAS_TRANSAC_SOLICI)) {
            return FORM_ACCESS_NULL_VIEW;
        }    
        form.setControl(ConstantesHermetic.CTE_CONTROL_ACTIVO);

        //int accionMapa = 1;
        try {
            logger.info("mostrarHWF3009Action");
                    
            String cliente = (String)request.getSession().getAttribute("cliente");
            String sucursal = (String)request.getSession().getAttribute("sucursal");
            
            //obtengo la fecha de hoy del BD
            String fechaHoy = servicioHermetic.getFechaHoy();
            
            //valido si eligio el Check para habilitar la hora
            if (form.getChk() == null || !form.getChk().equals("on")){
                form.setHoraDesde(null);
                form.setHoraHasta(null);
            }
            
            List listRemesaTransac = servicioHermetic.getRemesasTransaccionesSolicitadas(cliente, 
                                                            sucursal,
                                                            form.getFechaDesde(),
                                                            form.getFechaHasta(),
                                                            form.getHoraDesde(),
                                                            form.getHoraHasta()
                                                            );
            //request.setAttribute("listRemesaTransac",listRemesaTransac);            
            model.put("listRemesaTransac",listRemesaTransac);            
            
            model.put(FORM_KEY,form);  
        } catch (Exception e) {
            e.printStackTrace();
            //accionMapa = 0;
            return FORM_ERROR_VIEW;
        }

        return FORM_REME_TRANSAC_SOLICI_VIEW;
    }

}